{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "3ba3e3e7-2a00-467a-8fae-16f7e19b7e8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.special import comb\n",
    "from scipy.special import legendre\n",
    "from scipy.integrate import quad\n",
    "from scipy.optimize import curve_fit"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "2393722b-ec96-4900-9f1d-f67bc83b9a9e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_legendre_coefficients(f, N):\n",
    "    coefficients = []\n",
    "    for n in range(N + 1):\n",
    "        Pn = legendre(n)\n",
    "        # 使用正交性计算积分\n",
    "        integrand = lambda x: f(x) * Pn(x)\n",
    "        cn = (2 * n + 1) / 2 * quad(integrand, -1, 1)[0]\n",
    "        coefficients.append(cn)\n",
    "    return coefficients\n",
    "\n",
    "def legendre_approximation(x, coefficients):\n",
    "    approx = sum(cn * legendre(n)(x) for n, cn in enumerate(coefficients))\n",
    "    return approx\n",
    "    \n",
    "def bernstein_polynomial(n, k, x):\n",
    "    \"\"\"\n",
    "    Calculate the Bernstein polynomial B_{n,k}(x) using numpy.\n",
    "\n",
    "    Parameters:\n",
    "    - n: int, the degree of the polynomial\n",
    "    - k: int, the index of the Bernstein basis polynomial\n",
    "    - x: float or numpy array, the points at which to evaluate the polynomial\n",
    "\n",
    "    Returns:\n",
    "    - numpy array of the values of B_{n,k}(x).\n",
    "    \"\"\"\n",
    "    # Calculate the binomial coefficient\n",
    "    binom_coeff = comb(n, k)\n",
    "    # Compute Bernstein polynomial using numpy arrays\n",
    "    return binom_coeff * (x ** k) * ((1 - x) ** (n - k))\n",
    "\n",
    "def bernstein_approximation(f,n,x):\n",
    "    approximation = np.zeros_like(x, dtype=float)\n",
    "    for k in range(n + 1):\n",
    "        approximation += f(k / n) * bernstein_polynomial(n, k, x)\n",
    "    return approximation\n",
    "\n",
    "def multi_gaussian(x, *params):\n",
    "    y = np.zeros_like(x)\n",
    "    num_gaussians = len(params) // 3\n",
    "    for i in range(num_gaussians):\n",
    "        amplitude = params[3 * i]\n",
    "        mean = params[3 * i + 1]\n",
    "        std_dev = params[3 * i + 2]\n",
    "        y += amplitude * np.exp(-((x - mean) ** 2) / (2 * std_dev ** 2))\n",
    "    return y\n",
    "\n",
    "def guass(x):\n",
    "    p = 1.0/(2*np.pi)**0.5\n",
    "    return p*np.exp(-x**2/2)\n",
    "f = lambda x:np.sin(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "dcb574be-0b51-44e1-a8ba-2fead554450a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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8mXVvn17lSJFCqO6lytXTtnZ2an+/furq1evqitXrkTrHiLi5+enbG1t1cWLF1VISIhycXFRe/bsMSrj4eGhUqRIocaOHauuXbumfvvtN2Vqaqp27NhhKAOoVKlSqXnz5qlr166pn376SZmamqrLly8rpZS6ffu2AlTGjBnV+vXr1X///acePHigpkyZouzt7dXKlSvV1atX1YABA5S5ubnhNbt//75ycnJSv/76q1JKqcaNGysvLy8VFBSklFJq7969ClAvX740eo2rVKmizpw5o/bv369SpUqlqlatqho1aqQuXbqkNm3apCwsLNSqVasM9V+wYIHasmWLunXrljp69KgqXry4qlGjhlJKqZCQELV+/XoFqGvXrikfHx/16tUrw8/iw/dA3bp1laenpzpw4IA6d+6cqlatmsqaNauhvtF5D3zsxYsXSqfTqWPHjhntD3tPb9iwQVlZWal79+4ppZT6888/1YcfXXfv3lW2trZRPjp16hTle8TKykpt2rTJaP+WLVuUpaWlCggIiPC4KD8vhEhoDx4oVa6cUqDU+PHxeulXr5S6di32zxvV9/fHJLj5QJQfVlp+1IgfNWsal7WxibxsuXLGZVOnjrhcDEUV3AwdOlRVrVrVaN+9e/cMX2Z+fn7K3NxcrV271vD8q1evlI2NjeGL7ebNm0qn06kHDx4YnadSpUpq8ODBSintiw1QN2/eNDw/Y8YM5eLiYth2c3NT48aNM2wHBwerdOnShQtuChQoEKN7iMzcuXONztWrVy/VvHlzozIeHh6qevXqRvsaN25s+PJXSgtuOnfubFSmWLFiqkuXLkqp98FNWJASxt3dXf3yyy9G+4oUKaK6du1q2F6zZo2ytLRUgwcPVjY2Nkb3E1Fw8/Fr3KlTJ2VjY6Nev35t2FetWrUov9BPnDihAMMxH18nzIfBzfXr1xWgDh8+bHj+2bNnytraWq1ZsybS+n38HvjY2bNnFaC8vb2N9n/4ni5evLhq166dUip8cBMcHKxu3LgR5ePx48eRXr9r164qS5Ys4X7vz58/rwB1586dCI+T4EYkWtu2vf9usbNTasWKeLnso8chqtbQecre+YUqVkwpvT52zx+T4EamgicDp0+fZu/evdjZ2YV77tatW/j7+xMcHEzRokUN+x0cHMiRI4dh+8yZMyilyJ49u9HxgYGBpEqVyrBt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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "initial_guess = [\n",
    "    1, np.pi / 2, 0.5,  # 第一个高斯函数的 (amplitude, mean, std_dev)\n",
    "    1, np.pi, 0.5,      # 第二个高斯函数的 (amplitude, mean, std_dev)\n",
    "    1, 3 * np.pi / 2, 0.5 # 第三个高斯函数的 (amplitude, mean, std_dev)\n",
    "]\n",
    "\n",
    "x = np.linspace(0, 1, 10)\n",
    "\n",
    "# f = lambda x: np.sin(x * np.pi) \n",
    "\n",
    "n = 2\n",
    "coefficients = compute_legendre_coefficients(f, n)\n",
    "approximation = bernstein_approximation(f, n, x)\n",
    "approx_values = [legendre_approximation(x1, coefficients) for x1 in x]\n",
    "# popt, _ = curve_fit(multi_gaussian, x, np.sin(x), p0=initial_guess)?\\\n",
    "# 绘制结果\n",
    "plt.plot(x, f(x), label=\"sin(πx)\", color=\"blue\")\n",
    "plt.plot(x, approx_values, label=f'Legendre Approximation (N={n})', color=\"red\",  linestyle=\"--\")\n",
    "plt.plot(x, approximation, label=f\"Bernstein Approximation (n={n})\", color=\"green\", linestyle=\"--\")\n",
    "# plt.plot(x, multi_gaussian(x, *popt), label=f\"guass Approximation (n={n})\", color=\"yellow\", linestyle=\"--\")\n",
    "plt.xlabel(\"x\")\n",
    "plt.ylabel(\"y\")\n",
    "plt.legend()\n",
    "plt.title(\"Bernstein Polynomial Approximation of sin(πx)\")\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "212071f0-cc27-4cbc-8e58-c8337a6405ac",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bf5af264-c737-44b8-9056-088db358a8ac",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1e86f2a3-c4dd-4c37-9b3b-e62edd4f9867",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
